#pragma once

#include "Precompiled.hpp"

template <class TemplatedClass>
class Handle : public TypelessHandle
{
public:
  Handle();
  Handle(FactoryInterface* myFactory_, unsigned int index_, unsigned int ID_);
  Handle(const TypelessHandle& rhs);
  ~Handle();
  operator TypelessHandle ();
  TemplatedClass* GetTypedData();
  const TemplatedClass* GetTypedData() const;
  TemplatedClass* operator -> ();
  const TemplatedClass* operator -> () const;
  TemplatedClass& operator * ();
  const TemplatedClass& operator * () const;
private:
};

#include "Handle.cpp"